package utils

import (
	"io"
	"log"
	"net/http"
	"time"
)

func initHttpClient() *http.Client {
	//// 创建一个带有自定义 Transport 的 http.Client 实例
	//transport := &http.Transport{
	//	DialContext: (&net.Dialer{
	//		Timeout:   30 * time.Second, // DNS 解析和 TCP 连接的超时时间
	//		KeepAlive: 30 * time.Second, // TCP 连接的 KeepAlive 时间
	//	}).DialContext,
	//	MaxIdleConns:          100,              // 最大空闲连接数
	//	IdleConnTimeout:       90 * time.Second, // 空闲连接的超时时间
	//	TLSHandshakeTimeout:   5 * time.Second,  // TLS 握手的超时时间
	//	ExpectContinueTimeout: 1 * time.Second,  // Expect: 100-continue 的超时时间
	//}

	return &http.Client{
		//Transport: transport,
		Timeout: 3 * time.Second, // 整个请求的超时时间
	}
}

func DoPost(url string, body io.Reader) (string, error) {
	client := initHttpClient()
	res, err := client.Post(url, "application/json", body)
	if err != nil {
		return "", err
	}
	defer func(Body io.ReadCloser) {
		err := Body.Close()
		if err != nil {
			log.Fatal(err)
		}
	}(res.Body)
	responseBody, readErr := io.ReadAll(res.Body)
	if readErr != nil {
		return "", readErr
	}
	return string(responseBody), nil
}
